Terraform Module
ディレクトリ単位でmoduleになる
moduleのimport
code:tf
module "webserver_cluster" {
source = "../../../modules/services/webserver-cluster"
cluster_name = "webserver-prod"
}
pathを指定しつつ、適当に名前をつけて読み込む
module側がvariableにしているのに呼び出し側が指定していないとエラーになる
ここは静的解析が効くようだmrsekut.icon
source = には色々指定できる
localのfile path
Github等のURL
code:tf
source = "github.com/foo/modules//services/webserver-cluster?ref=v0.0.1"
リポジトリ名と//ディレクトリの境界は二重スラッシュ
?ref=はgitのタグ
S3 bucketsなど
module自体の返り値
外部moduleからmodule.<MODULE_NAME>.<OUTPUT_NAME>で参照できる
相対パスの扱いに注意する
path.module
path.root
path.cwd
moduleぼバージョン管理
共通のモジュールを使うと、stagingのための変更がprodに影響を及ぼしてしまう
2つのリポジトリに分ける
再利用のためのパーツを集めたリポジトリ
stating/prod等を集めたリポジトリ
各環境ではsourceでgithub urlを指定して別のバージョンを参照する
moduleは小さく保とう